package com.syl.auth.authorization;

import com.syl.auth.model.SmallUserInfo;
import org.springframework.security.authentication.AuthenticationServiceException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

/**
 * @ClassName SmallUserDetailsService
 * @Description 用户相关逻辑处理
 * @Author YunLong
 * @Date 2023/4/27 22:20
 */
public interface SmallUserDetailsService {

    /**
     * @Author YunLong
     * @Date 2023/4/27 22:21
     * @Description 根据用户名获取用户信息
     **/
    default SmallUserInfo loadUserByUsername(String username) throws UsernameNotFoundException {
        throw new AuthenticationServiceException("不支持的获取用户方法。");
    }

    /**
     * @Author YunLong
     * @Date 2023/4/27 22:22
     * @Description 根据手机号获取用户信息
     **/
    default SmallUserInfo loadUserByPhone(String phone) {
        throw new AuthenticationServiceException("不支持的获取用户方法。");
    }

    /**
     * @Author YunLong
     * @Date 2023/4/27 22:23
     * @Description 根据第三方平台获取用户信息
     * 如第三平台类型为微信，第三方平台唯一Id为微信的openId
     **/
    default SmallUserInfo loadByThirdPlatformId(String thirdPlatformType, String thirdPlatformId) {
        throw new AuthenticationServiceException("不支持的获取用户方法。");
    }
}
